With multiprocessors gaining more popularity in new computer system designs, there is a growing expectation that parallel programming will become more popular. Parallel programming requires programmers to understand the effects of the memory consistency model supported by a computer system on program behavior. Memory consistency model specifies the orderings of load operations and store operations occur when several processes are accessing a set of memory locations. Memory synchronization is required to ensure the instructions are correctly executed and producing accurate results.
Moreover, in multiprocessors with multiple processing cores, a core may execute instructions in chunks atomily. Such multiprocessors will have to handle the situation when two instruction chunks on different processing cores are interfering with each other. In some solutions, a processing core aborts a presently executing instruction chunk when an interfering event is detected. However, such method may lead to further memory reliance issues, such as, for example, livelock and data starvation.